#ifndef _SOUND_APP_H_
#define _SOUND_APP_H_

#include <stdint.h>
#include <config.h>
#include <stdbool.h>

/**
 * @brief 删除所有语音文件
 *
 */
extern void DeleteAllAudioFile(void);

/**
 * @brief 播放系统启动音效
 *
 */
extern void PlayStartupAudio(void);

/**
 * @brief 播放设备激活提示音效
 *
 */
extern void PlayDeviceActivatedAudio(void);

/**
 * @brief 播放按键音
 *
 */
extern void PlayKeypadToneAudio(void);

/**
 * @brief 播放撬锁警报音
 *
 */
extern void PlayAntiPryingAlarmAduio(void);

/**
 * @brief 播放门铃音效
 *
 */
extern void PlayDoorbellAudio(void);

/**
 * @brief 播放切换人脸鉴权模式音效
 *
 */
extern void PlaySwitchFaceAuthenticationMode(void);

/**
 * @brief 播放切换二维码鉴权模式音效
 *
 */
extern void PlaySwitchQrcodeAuthenticationModeAudio(void);

/**
 * @brief 播放设置状态音效
 *
 * @param Status - 状态(true:成功 false:失败)
 */
extern void PlaySettingStatusAudio(bool Status);

/**
 * @brief 播放验证状态音效
 *
 * @param Status - 状态(true:成功 false:失败)
 */
extern void PlayVerificationStatusAudio(bool Status);

/**
 * @brief 播放钥匙移除音频
 *
 */
extern void PlayKeyRemoveAudio(void);

/**
 * @brief 播放钥匙插入音频
 *
 */
extern void PlayKeyInsertAudio(void);

/**
 * @brief 播放设备发现状态音效
 *
 * @param Status - 状态(true:成功 false:失败)
 */
extern void PlayDeviceDiscoverStatusAudio(bool Status);

/**
 * @brief 播放恢复出厂状态音效
 *
 * @param Status - 状态(true:成功 false:失败)
 */
extern void PlayFactoryResetStatusAudio(bool Status);

/**
 * @brief 播放权限不足音效
 *
 */
extern void PlayPermissionDeniedAudio(void);

/**
 * @brief 播放不在有效期音效
 *
 */
extern void PlayOutOfDateAudio(void);

/**
 * @brief 播放设备反锁音效
 *
 */
extern void PlayAutiLockAudio(void);

/**
 * @brief 播放卡片已顶替音效
 *
 */
extern void PlayCardReplaceAudio(void);

/**
 * @brief 播放设备繁忙音效
 *
 */
extern void PlayEquipmentBusyStatusAudio(void);

/**
 * @brief 播放用户执行门锁上锁音效
 *
 */
extern void PlayUserExecuteDoorLockAudio(void);

/**
 * @brief 播放当前离合器状态
 *
 * @param Status - 状态(true:成功 false:失败)
 */
extern void PlayCurrentLockStatusAudio(bool Status);

/**
 * @brief 播放当前网络质量音效
 *
 * @param Rssi - 信号增益
 */
extern void PlayNetworkQualityAudio(uint8_t Rssi);

/**
 * @brief 播放常开模式状态音效
 *
 * @param Status - 状态(true:成功 false:失败)
 */
extern void PlayNormallyOpenStatueAudio(bool Status);

/**
 * @brief 播放正在下发文件音效
 *
 */
extern void PlayInitiateDocumentReceiptAudio(void);

/**
 * @brief 播放系统已锁定音效
 *
 */
extern void PlaySystemLockAudio(void);

/**
 * @brief 播放低电压音效
 *
 */
extern void PlayLowBatteryAudio(void);

/**
 * @brief 播放门没关好提示音
 *
 */
extern void PlayDoorNotCloseAudio(void);

/**
 * @brief 播放新增卡片音效
 *
 */
extern void PlayAddNewCardAudio(void);

/**
 * @brief 播放通过键盘录入密钥音效
 *
 */
extern void PlayEnterKeyViaTheKeyboardAudio(void);

/**
 * @brief 播放无效密钥音效
 *
 */
extern void PlayLnvalidKeyValueAudio(void);

/**
 * @brief 播放录入密钥比对不一致音效
 *
 */
extern void PlayPasswordComparisonIsInconsistentAudio(void);

/**
 * @brief 播放请再输入一遍密钥音效
 *
 */
extern void PlayAuthenticationKeyInconsistencyAudio(void);

/**
 * @brief 播放通过人脸注册用户音效
 *
 * @param WaitSecond - 等待秒数
 */
extern void PlayStartRegisterFaceEigenvaluesAudio(uint8_t WaitSecond);

/**
 * @brief 播放请正视摄像头音效
 *
 */
extern void PlayLookMiddleAudio(void);

/**
 * @brief 播放请向上抬头音效
 *
 */
extern void PlayLookUpAudio(void);

/**
 * @brief 播放请向下低头音效
 *
 */
extern void PlayLookDownAudio(void);

/**
 * @brief 播放请向左摇头音效
 *
 */
extern void PlayLookLeftAudio(void);

/**
 * @brief 播放请向右摇头音效
 *
 */
extern void PlayLookRightAudio(void);

/**
 * @brief 播放请按手指音效
 *
 */
extern void PlayStartPrintingAudio(void);

/**
 * @brief 播放请再按一遍手指音效
 *
 */
extern void PlayReadmissionPrintingAudio(void);

/**
 * @brief 播放请扫码音效
 *
 */
extern void PlayPleaseScanQrCodeAudio(void);

/**
 * @brief 播放用户注册状态音效
 *
 * @param Status - 状态(true:成功 false:失败)
 */
extern void PlayUserRegistrationStatusAudio(bool Status);

/**
 * @brief 播放退出本地注册模式音效
 *
 */
extern void PlayExitLocalRegisterAudio(void);

/**
 * @brief 播放退出验证模式音效
 *
 */
extern void PlayExitVerificationModeAudio(void);

/**
 * @brief 播放设备处于初始化状态音效
 *
 */
extern void PlayDeviceInTheInitializedStateAudio(void);

/**
 * @brief 播放授权码已过期音频
 *
 */
extern void PlayLicenseExpiredAudio(void);

/**
 * @brief 播放授权即将到期音效
 *
 * @param Day - 剩余天数
 */
extern void PlayExpirationReminderAudio(uint8_t Day);

/**
 * @brief 播放连接测试音效
 *
 */
extern void PlayConnectTestAudio(void);

/**
 * @brief 播放设备自检错误音效
 * 
 * @param ErrorCode - 错误码
 */
extern void PlaySelfTestErrorAudio(uint8_t ErrorCode);

/**
 * @brief 播放用户已存在音效
 *
 */
extern void PlayUserAlreadyExistsAudio(void);

/**
 * @brief 播放请验证管理员音效
 *
 */
extern void PlayVerifyAdminPasswordAudio(void);

/**
 * @brief 播放退出注册模式音效
 *
 */
extern void PlayExitRegisterMethodAudio(void);

/**
 * @brief 卡片归属出错
 *
 */
extern void PlayCardAffiliationErrorAudio(void);

/**
 * @brief 该功能卡已禁用
 * 
 */
extern void PlayThisFunctionCardHasBeenDisabled(void);

/**
 * @brief 播放请验证用户权限音效
 *
 */
extern void PlayVerifyUserPermissionsAudio(void);

/**
 * @brief 播放提示注册用户数量音效
 *
 * @param SuccessCount - 成功数量
 * @param FailureCount - 失败数量
 */
extern void PlayRegisterUserCountAudio(uint8_t SuccessCount, uint8_t FailureCount);

/**
 * @brief 播放剩余电量百分比音效
 *
 * @param Percentage - 剩余电量
 */
extern void PlayRemainingBatteryPercentageAudio(uint8_t Percentage);

/**
 * @brief 音频功能初始化
 *
 */
extern void SoundConfiguration(void);

#endif
